#include "widget.h"
#include "ui_widget.h"

#include <QtDebug>



Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    button = new QPushButton("点击按钮",this);
    connect(button,&QPushButton::clicked,this,[this](){
        this->setWindowTitle("按钮被点击");
    });
}

Widget::~Widget()
{
    delete ui;
}

void Widget::MySlot1()
{
    this->setWindowTitle("槽函数1");
}

void Widget::MySlot2()
{
    this->setWindowTitle("槽函数2");
}

void Widget::on_pushButton_clicked()
{
    disconnect(button,&QPushButton::clicked,this,&Widget::MySlot1);
    connect(button,&QPushButton::clicked,this,&Widget::MySlot2);
}


//Widget::Widget(QWidget *parent)
//    : QWidget(parent)
//    , ui(new Ui::Widget)
//{
//    ui->setupUi(this);
//    connect(this,&Widget::mySignal1,this,&Widget::MySlot);
//    connect(this,&Widget::mySignal2,this,&Widget::MySlot);
//    connect(this,&Widget::mySignal3,this,&Widget::MySlot);
//    emit mySignal1("signal1");
//    emit mySignal2("signal2");
//    emit mySignal3("signal3");
//}

//Widget::~Widget()
//{
//    delete ui;
//}

//void Widget::MySlot(QString text)
//{
//    qDebug() << text;
//}

//void Widget::MySlot2()
//{
//    qDebug() << "MySlot2槽函数";
//}

//void Widget::MySlot3()
//{
//    qDebug() << "MySlot3槽函数";
//}


//Widget::Widget(QWidget *parent)
//    : QWidget(parent)
//    , ui(new Ui::Widget)
//{
//    ui->setupUi(this);
////    connect(this,&Widget::mySignal,this,&Widget::mySlot); //无法识别

//    //带参
//    void (Widget::*signal)(QString,int) = &Widget::mySignal;
//    void (Widget::*slot)(QString) = &Widget::mySlot;
//    connect(this,signal,this,slot);

//    //不带参
//    void (Widget::*signal2)() = &Widget::mySignal;
//    void (Widget::*slot2)() = &Widget::mySlot;
//    connect(this,signal2,this,slot2);
//}

//Widget::~Widget()
//{
//    delete ui;
//}

//void Widget::mySlot()
//{
//    this->setWindowTitle("发送了无参自定义信号");
//}

//void Widget::mySlot(QString text)
//{
//    this->setWindowTitle(text);
//}

//void Widget::on_pushButton_clicked()
//{
//    emit mySignal("参数来了",10);
//}

//void Widget::on_pushButton_2_clicked()
//{
//    emit mySignal();
//}

//Widget::Widget(QWidget *parent)
//    : QWidget(parent)
//    , ui(new Ui::Widget)
//{
//    ui->setupUi(this);
//    QPushButton *Button = new QPushButton("按钮",this);
//    Button->move(200,500);
//    //错误写法，信号发送者与信号类型不匹配
////    connect(Button,&Widget::mySignal,this,&Widget::mySlot);

//    //将信号与槽 提前 建立关联
//    connect(Button,&QPushButton::clicked,this,&Widget::handleButtonClick);
//    connect(this,&Widget::mySignal,this,&Widget::mySlot);
//}

//Widget::~Widget()
//{
//    delete ui;
//}

//void Widget::handleButtonClick()
//{
//    emit mySignal();    //发送自定义信号
//}

//void Widget::mySlot()
//{
//    this->setWindowTitle("发送了自定义信号");
//}


//Widget::Widget(QWidget *parent)
//    : QWidget(parent)
//    , ui(new Ui::Widget)
//{
//    ui->setupUi(this);
////    QPushButton * pushButton = new QPushButton(this);
////    pushButton->setText("点击关闭窗口");
////    //关联信号和槽，实现点击按钮关闭窗口的效果
////    connect(pushButton,&QPushButton::clicked,this,&Widget::handleClose);
//}

//Widget::~Widget()
//{
//    delete ui;
//}

//void Widget::on_pushButton_clicked()
//{
//    qDebug() << "调用了图形化自动生成的槽";
//    this->setWindowTitle("改变窗口标题");
//}

//void Widget::handleClose()
//{
//    qDebug() << "调用了自定义的槽";
//    this->close();  //关闭窗口
//}








